package com.tedu.api.ee;


import org.junit.Test;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.nio.file.FileAlreadyExistsException;

/**
 * 流--传输数据----传书数据过程绝对不能出错 【处理手段】
 * 标准流结合异常----标准io
 *
 * 异常
 * java 面向对象语言，过程中 所出现的所有错误，定义为对象【处理对应错误】
 *
 * Throwable 顶级异类超类
 *
 * Exception  异常；描述程序级别的错误---有解决方安
 *               编译器；RunTimeEXECPTION
 *               Fi了OutPUT Stream创建对象---波浪线---抛出方法之外
 *               检查异常；通常都是编译器见擦汗处理  程序直接报错  抛出
 *               解决方案，1.0捕获异常(*)
 *  2.0抛出异常---抛出方法之外--打印控制台
 *
 *  运行期；控制台直接显示 对象【异常对象名字，产生原因
 *  】非运行检查
 * Error  错误    描述系统级别的错误---出现---程序宕机
 *          非常低-----递归问题
 *
 */


public class EE {
    /**
     * Error  错误---程序严重错误
     * 模拟；方法条方法---找溢出错误
     * StackoverflowError  找出溢出错误
     * ----程序宕机----后台；9忆账号
     * while(true){
     * 拼接字符串对象
     * }
     */

    public static void method() {
        method();
    }

    @Test
    public void testError() {
        EE.method();
    }

    /**
     * Exception 异常；检查异常【出现编译其】---代码报波浪线
     * 两种处理手段 1.0捕获异常
     * 2.0抛出异常  throws  异常名字
     * 非检查异常【出现运行其
     * 异常 nullPOINExcption    空文件
     * 产生语言   获取
     **/

    @Test
    public void testException() throws FileAlreadyExistsException, FileNotFoundException {
        //检查异常【出现编译器】--代码报波浪线
        //  FileOutputStream  fis=new FileOutputStream("");
        //非检查异常[出现运行其]--控制台
        String str = "a";
//str.length();
//str.charAt(1);
        Integer.parseInt(str); //解析字符串--转换为对应类型

/**
 * 作业
 *
 */


    }

    @Test
    public void testException() throws FileNotFoundException {
        //检查异常【出现编译期】---代码报波浪线
        FileOutputStream fis=new FileOutputStream("");
        //非检查异常【出现运行期】---控制台
        try {
            String str="a";
            str.length();
            str.charAt(1);
            Integer.parseInt(str); //解析字符串--转换为对应类型
        } catch(StringIndexOutOfBoundsException e){
            e.printStackTrace(); //打印异常信息
            System.out.println("字符串小异常：下标越界异常~~");
        } catch (NumberFormatException e) {
            e.printStackTrace();   //打印异常信息
            System.out.println("字符串小异常~~");
        } catch (Exception e){
            e.printStackTrace();
            System.out.println("大异常~~");
        }
        finally {
            System.out.println("一定执行代码块");

        }



        @Test
        public void testHomeWork1(){
            //异常1. ArithmeticException
        int T1=10;
        int G2=0;
        System.out.println(T1/G2);

            //异常2.
      Exception e=new Exception();
       RuntimeException r= (RuntimeException) e;
        System.out.println("");

            //异常3
     int[] arr = new int[0];
        System.out.println(arr[0]);


            //异常4
        int[] array = new int[5];
        int index = 5;
        array[index] = 10;


        }





    }












}
